/*
 * Copyright (C) 2017-2021
 * All rights reserved, Designed By
 * Copyright authorization contact 18814114118
 */
package com.shop.cereshop.commons.domain.wallet;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * cere_wallet_transaction 钱包流水实体类
 * @author
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "CereWalletTransaction", description = "钱包流水实体类")
public class CereWalletTransaction implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 流水ID
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "流水ID")
    private Long transactionId;

    /**
     * 用户ID
     */
    @ApiModelProperty(value = "用户ID")
    private Long buyerUserId;

    /**
     * 交易类型 1-充值 2-消费 3-退款 4-提现 5-冻结 6-解冻 7-奖励 8-佣金
     */
    @ApiModelProperty(value = "交易类型")
    private Integer transactionType;

    /**
     * 交易金额
     */
    @ApiModelProperty(value = "交易金额")
    private BigDecimal amount;

    /**
     * 交易前余额
     */
    @ApiModelProperty(value = "交易前余额")
    private BigDecimal balanceBefore;

    /**
     * 交易后余额
     */
    @ApiModelProperty(value = "交易后余额")
    private BigDecimal balanceAfter;

    /**
     * 交易前冻结金额
     */
    @ApiModelProperty(value = "交易前冻结金额")
    private BigDecimal frozenBefore;

    /**
     * 交易后冻结金额
     */
    @ApiModelProperty(value = "交易后冻结金额")
    private BigDecimal frozenAfter;

    /**
     * 关联订单号
     */
    @ApiModelProperty(value = "关联订单号")
    private String orderId;

    /**
     * 订单类型 1-商品订单 2-提现订单
     */
    @ApiModelProperty(value = "订单类型")
    private Integer orderType;

    /**
     * 交易描述
     */
    @ApiModelProperty(value = "交易描述")
    private String description;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 操作人ID
     */
    @ApiModelProperty(value = "操作人ID")
    private Long operatorId;

    /**
     * 操作人类型 1-用户 2-系统 3-管理员
     */
    @ApiModelProperty(value = "操作人类型")
    private Integer operatorType;

    /**
     * IP地址
     */
    @ApiModelProperty(value = "IP地址")
    private String ipAddress;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private String createTime;
}
